package com.xuegao.xuegaololskills;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

@ComponentScan({"com.xuegao.xuegaololskills.swing"})
@SpringBootApplication
public class XuegaoLolSkillsApplication {

    // https://my.oschina.net/u/3768341/blog/1819081
    // https://my.oschina.net/u/3768341/blog/1820676
    // public static void main(String[] args) {
    //     SpringApplicationBuilder builder = new SpringApplicationBuilder(XuegaoLolSkillsApplication.class);
    //     ApplicationContext applicationContext = builder.headless(false).run(args);
    //     Swingclient swing = applicationContext.getBean(Swingclient.class);
    //     swing.setVisible(true);
    // }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
        SpringApplication.run(XuegaoLolSkillsApplication.class, args);
    }

    private static void createAndShowGUI() {
        // 创建 JFrame 实例
        JFrame frame = new JFrame("LOL Skills");
        // 设置 frame 窗口的整体大小
        frame.setSize(350, 200);
        // 点击 X 进程直接关闭
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 获得一个对象
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        // 设置frame再最中央显示
        frame.setLocation((dimension.width - frame.getWidth()) / 2, (dimension.height - frame.getHeight()) / 2);
        // 创建面板，这个类似于 HTML 的 div 标签
        JPanel panel = new JPanel();
        // frame 添加面板
        // frame.add(panel);
        // 设置内容面板
        frame.setContentPane(panel);

        // 调用用户定义的方法并添加组件到面板
        placeComponents(panel);

        // 设置 frame 可见
        frame.setVisible(true);
        // 设置 frame 在最上层显示
        frame.setAlwaysOnTop(true);

    }

    private static void placeComponents(JPanel panel) {

        /* 布局部分我们这边不多做介绍
         * 这边设置布局为 null
         */
        panel.setLayout(null);
        panel.setFocusable(true);


        // 创建 JLabel
        JLabel userLabel = new JLabel("User:");
        /* 这个方法定义了组件的位置。
         * setBounds(x, y, width, height)
         * x 和 y 指定左上角的新位置，由 width 和 height 指定新的大小。
         */
        userLabel.setBounds(10, 20, 80, 25);
        panel.add(userLabel);

        /*
         * 创建文本域用于用户输入
         */
        JTextField userText = new JTextField(20);
        userText.setBounds(100, 20, 165, 25);
        // 添加键盘监听事件
        userText.addKeyListener(new KeyHandler());
        panel.add(userText);

        // 输入密码的文本域
        JLabel passwordLabel = new JLabel("Password:");
        passwordLabel.setBounds(10, 50, 80, 25);
        panel.add(passwordLabel);

        /*
         *这个类似用于输入的文本域
         * 但是输入的信息会以点号代替，用于包含密码的安全性
         */
        JPasswordField passwordText = new JPasswordField(20);
        passwordText.setBounds(100, 50, 165, 25);
        panel.add(passwordText);

        // 创建登录按钮
        JButton loginButton = new JButton("login");
        loginButton.setBounds(10, 80, 80, 25);
        panel.add(loginButton);
    }

}
//创建响应键盘事件监听器类

class KeyHandler implements KeyListener {
    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println(" keyPressed ");
        if (e.getID() == KeyEvent.KEY_PRESSED) {
            int code = e.getKeyCode();
            // if (code == KeyEvent.VK_F1) {
            //     text.append("键盘" + KeyEvent.getKeyText(e.getKeyCode()) + "键按下\n");
            // }
        }

    }

    @Override

    public void keyReleased(KeyEvent e) {
        //text.append("键盘" + KeyEvent.getKeyText(e.getKeyCode()) + "键松开\n");
        System.out.println(" keyReleased ");
    }

    // f卡头的按键不会走下面
    @Override
    public void keyTyped(KeyEvent e) {
        System.out.println(" keyTyped    ");
        //text.append("输入内容:" + e.getKeyChar() + "\n");
        // if (e.getID() == KeyEvent.KEY_TYPED) {
        //     char ch = e.getKeyChar();
        //     text.append("输入内容:" + e.getKeyChar() + "\n");
        // }
    }
}